#program als2302
  10 DEF FN t(a)= (( PEEK 23672+256* PEEK 23673+65536* PEEK 23674)/a= INT (( PEEK 23672+256* PEEK 23673+65536* PEEK 23674)/a))
#autostart
  20 CLEAR 64511: SPRITE CLEAR 
  30 RUN AT 3: PROC defscreen(): PROC setup1(): PROC intro1(): PROC setup2(): PROC deftiles(): PROC entcont(): PROC intro2(): PROC titlescreen(): PROC eveofthewar()
  40 GO TO %1000
  99 REM =======================--- LET'S MOW, BRANDON!    --- =======================
 120 PROC mstart(): PROC scrdown(22)
 140 SPRITE PRINT 1: %g=0: xp=0: POKE 23674,0: DPOKE 23672,0
 160 FOR %n=21 TO 8 STEP -1
 180 IF %(n MOD 2)=1 THEN %o=0: ELSE %o=9
 220 %y=%8*(n+3): %z=1
 230 FOR %x=%m[6+o] TO %m[7+o] STEP % SGN {k*m[8+o]}
 240 REPEAT : k$= INKEY$ : IF mo=6 THEN GO SUB %500
 245 pk= PEEK 23673: IF pk>41 AND FN t(250) THEN GO SUB %600
 248 REPEAT UNTIL k$ ="m"
 250 z=%z: %v=0: IF mo=2 AND z=3 THEN REPEAT : REPEAT UNTIL INKEY$ =""
 260 %a=%(x-m[9+o])/8
 280 SPRITE 0,%x+m[10+o],%y,%m[z],%m[12+o]
 300 SPRITE 1,%x+m[11+o],%y,%m[5],%m[12+o]
 360 IF %(x>m[13+o]) AND (x<m[14+o]) AND (((z=3) AND (k=1)) OR ((z MOD 2=0) AND (k=2))) THEN TILE 1,1 AT %9+ RND 8,0 TO %a,%n: %g=%g+1: PLAY "","M16N3c"
 380 IF mo<>2 THEN PLAY "",p$
 390 IF mo=2 AND z=1 THEN PLAY "",p$
 400 IF %g=448 THEN GO TO %2000
 410 IF mo=3 AND RND <4.5e-4 THEN %v=1
 412 IF mo=4 AND RND <1.1e-3 THEN %v=2
 415 IF xp>=100 THEN %v=1
 425 IF %(v=2) AND (x>=128) AND (x<=256) AND (n>=10) THEN GO TO %2700
 430 IF %(v=1) AND (x>=32) AND (x<=256) THEN GO TO %2410
 435 %z=%z+1: IF %z=5 THEN %z=1
 440 NEXT %x
 460 NEXT %n
 490 GO TO %2000
 499 REM =======================--- CAREFUL WITH THAT NUKE --- =======================
 500 IF k$="m" THEN xp=xp+.33* RND 
 510 xp=xp- FN t(50): IF xp<0 THEN xp=0
 520 IF xp>=90 THEN %m[5]=6: ELSE IF xp>=80 AND xp<90 THEN %m[5]=5: ELSE %m[5]=4 
 525 IF %v=1 THEN %m[5]=6
 530 SPRITE 0,%x+m[10+o],%y,%m[z],%m[12+o]
 540 SPRITE 1,%x+m[11+o],%y,%m[5],%m[12+o]
 580 RETURN 
 590 REM =======================--- EXTRA WEED             --- =======================
 600 FOR %j=1 TO 5: %a=% RND 32: %b=%21-( RND (21-n)): %c=%1+ RND 8: TILE 1,1 AT 0,%c TO %a,%b: NEXT %j: fail=1: RETURN 
1000 REM =======================--- NEW OPENING MENU       --- =======================
1010 FOR %n=0 TO 38: SPRITE %n,0,0,63,0: NEXT %n
1020 %p=96: LAYER 1,0: PAPER %p: CLS : LAYER 2: INK 255 
1030 FOR %n=192 TO %p STEP -32: REG 74,%n: PAPER %n: CLS : FOR %m=1 TO 300: NEXT %m: NEXT %n
1040 LOAD "toptitle.bin" BANK 9
1050 PROC textprint(16,26)
1060 PRINT CHR$ 30; CHR$ 6; POINT 35,162; PAPER 224;" ""GO GET THAT GRASS RED WEED!"" "; CHR$ 30; CHR$ 8;
1070 INK 0: PLOT 118,169: DRAW 31,-7: INK 255
1080 PROC entcont(): PROC scrdown(5)
1090 PRINT CHR$ 30; CHR$ 6; PAPER 255; POINT 66,48;z$( TO 20); POINT 66,52;z$( TO 20); INK 0; POINT 72,50;"SELECT YOUR MOWER:"
1100 FOR %n=1 TO 6
1110 %q=%(20*n)+52: PRINT CHR$ 30; CHR$ 8; POINT 0,%q; PAPER 224;z$; INK 192;""; PAPER 255; INK 192; POINT 0,%q;"   "; POINT 0,%q+8;"";
1115 PRINT CHR$ 30; CHR$ 6; INK 0; OVER 1; POINT 8,%q+2;%n; POINT 9,%q+2;%n; POINT 8,%q+3;%n; POINT 9,%q+3;%n;
1120 n=%n: PRINT CHR$ 30; CHR$ 6; OVER 1; POINT 30,%q+4; INK 96;m$(n,3 TO ); POINT 29,%q+3; INK 255;m$(n,3 TO )
1130 NEXT %n
1140 k$= INKEY$ : IF k$="" THEN GO TO %1140
1150 mo= CODE k$-48
1160 IF mo<1 OR mo>6 THEN BEEP 2,-46: GO TO %1140
1170 PROC scrdown(6)
1180 mp=3*(42- VAL m$(mo,1 TO 2)): PRINT CHR$ 30; CHR$ 8; PAPER 224; POINT 0,40;z$; INK 192;"";
1190 q$=m$(mo,3 TO 2+ VAL m$(mo,1 TO 2)): PRINT CHR$ 30; CHR$ 6; PAPER 224; OVER 1; POINT mp+3,44; INK 96;q$; POINT mp+2,43; INK 255;q$
1200 %m[5]=3: %k=1: p$="UX300W6O4N4d"
1210 IF mo=1 THEN PROC textprint(27,36): PROC entreselect(): PROC scrdown(5): GO TO %1090
1220 IF mo=2 THEN PROC textprint(37,47): p$="T225O8N3$BA"
1230 IF mo=3 THEN PROC textprint(48,58): %m[5]=7
1240 IF mo=4 THEN PROC textprint(59,69): %m[5]=37
1250 IF mo=5 THEN PROC textprint(70,81): PROC entreselect(): PROC scrdown(5): GO TO %1090
1260 IF mo=6 THEN PROC textprint(82,92): %k=2: %m[5]=4
1270 PROC entstart()
1325 REM =======================--- FINAL PREP WORK        --- =======================
1330 PRINT CHR$ 30; CHR$ 8; AT 23,0;: fail=0
1340 CLS : LAYER 1,0: PAPER 249: CLS 
1350 LAYER 2: LOAD "mars.bin" BANK 9
1360 TILE 32,14 AT 0,1 TO 0,8
1390 GO TO %100
2000 REM =======================--- WELL MOWN              --- =======================
2010 q$="W E L L   M O W N !": IF fail=1 THEN q$=q$( TO 18)+". . . ?"
2020 q=3*(42- LEN q$): PRINT AT 0,0; CHR$ 30; CHR$ 6; CHR$ 29; CHR$ 1;
2030 FOR %n=0 TO 7: PRINT OVER 1; INK %(n*32); POINT %( INT {q}+6-n),176;q$: NEXT %n
2040 FOR %n=1 TO 3: PRINT OVER 1; INK %228+(n*9); POINT %( INT {q}-1-n),176;q$: NEXT %n
2050 PRINT AT 0,0; CHR$ 29; CHR$ 0; CHR$ 30; CHR$ 8;
2060 RUN AT 0: IF fail=1 THEN q$="T200O3N3C&#f&c6_8g": PLAY q$,"O4N9&11#DD$D11Cb$b11a$ag",q$: ELSE PLAY "T150O5N4ce6g4a3a1g3a1b4C","","O4N4gb6D4E3E1D3E1#F4G"
2065 PLAY "9&": RUN AT 3
2070 SPRITE PRINT 0: %p=0: PAPER %p: REG 74,0: CLS 
2080 IF fail=1 THEN PROC toomuchweed(): PROC entanothermow(): GO TO %1000
2090 GO TO %3000
2410 REM =======================--- MARS-SHATTERING KABOOM --- =======================
2420 IF %o=0 THEN %q=5
2430 IF %o=9 THEN %q=-5
2435 %q=%o+5: IF %q=14 THEN %q=-5
2440 SPRITE 2,%x+m[10+o]+ SGN {q},%y-2,%8+(o=9),1
2450 SPRITE 3,%x+m[11+o]+ SGN {q},%y-2,%9-(o=9),1
2460 RUN AT 0: FOR %n=1 TO INT (mo/2): %u=% BANK 47 USR 0: NEXT %n: RUN AT 3
2470 IF mo=6 THEN SPRITE PRINT 0: LOAD "mushroom.sl2" LAYER : RUN AT 0: %u=% BANK 47 USR 31: RUN AT 3
2480 IF mo=3 THEN FOR %n=1 TO 1000: NEXT %n: SPRITE PRINT 0
2490 %p=0: PAPER %p: REG 74,0: CLS 
2500 IF mo=3 THEN PROC smallboomoutro()
2505 IF mo=6 THEN PROC bigboomoutro()
2510 PROC martiantheme()
2520 IF mo=3 THEN PROC entanothermow()
2525 IF mo=6 THEN PROC entreincarnate()
2530 GO TO %1000
2700 REM =======================--- UUUUUUULLLLLLLAAAAAAA  --- =======================
2705 PAUSE 1: %q=%o+5: IF %q=14 THEN %q=-5
2710 SPRITE 2,%x+m[10+o]+ SGN {q},%y-16,%33+(3*(o=9)),1: SPRITE 3,%x+m[11+o]+ SGN {q},%y-16,%34+(o=9),1
2715 FOR %n=1 TO 8000: NEXT %n: SPRITE 2,0,0,0,0: SPRITE 3,0,0,0,0
2720 INK 160: OVER 1: PRINT AT 0,0; CHR$ 29; CHR$ 1;: q$="UX444W7N4"
2730 FOR %n=4 TO 76 STEP 8: PRINT INK 0; POINT %n+1,1;"U"; POINT %n+2,1;"U"; INK 160; POINT %n,0;"U"; POINT %n+1,0;"U": PLAY q$+"d",q$+"$b",q$+"g": NEXT %n
2740 FOR %n=84 TO 100 STEP 8: PRINT INK 0; POINT %n+1,1;"L"; POINT %n+2,1;"L"; INK 160; POINT %n,0;"L"; POINT %n+1,0;"L": PLAY q$+"d",q$+"a",q$+"f": NEXT %n
2750 FOR %n=108 TO 244 STEP 8: PRINT INK 0; POINT %n+1,1;"A"; POINT %n+2,1;"A"; INK 160; POINT %n,0;"A"; POINT %n+1,0;"A": PLAY q$+"d",q$+"a",q$+"f": NEXT %n
2760 INK 255: OVER 0: PRINT CHR$ 29; CHR$ 0; AT 0,0; 
2770 PROC mfmleft(0,0)
2780 FOR %n=0 TO 5: SPRITE %31+n,%99+(16*n),%67+(4*n),32,1: NEXT %n
2790 SPRITE 37,173,78,8,1: SPRITE 38,189,78,9,1: RUN AT 0: %u=% BANK 47 USR 0: RUN AT 3
2800 FOR %n=31 TO 36: SPRITE %n,0,0,0,0: NEXT %n
2810 INK 236: PLOT 67,36: DRAW % SGN {x-83},% SGN {y-58}: INK 224: PLOT 68,36: DRAW % SGN {x-83},% SGN {y-58}: PLOT 67,37: DRAW % SGN {x-83},% SGN {y-58}: INK 255
2820 %q=%o+5: IF %q=14 THEN %q=-5
2830 SPRITE 2,%x+m[10+o]+ SGN {q},%y-2,%8+(o=9),1: SPRITE 3,%x+m[11+o]+ SGN {q},%y-2,%9-(o=9),1: RUN AT 0: %u=% BANK 47 USR 0: RUN AT 3
2840 FOR %n=1 TO 8000: NEXT %n: SPRITE PRINT 0
2850 %p=0: PAPER %p: REG 74,0: CLS 
2860 INK 109: PROC textprint(122,136)
2870 INK 182: PROC textprint(122,136)
2880 INK 255: PROC textprint(122,136)
2890 PROC martiantheme()
2900 PROC entreincarnate()
2980 GO TO %1000
3000 REM =======================--- CORNED BEEF SANDWICH   --- =======================
3010 INK 109: PROC textprint(153,170)
3020 INK 182: PROC textprint(153,170)
3030 INK 255: PROC textprint(153,170)
3040 RUN AT 0: PLAY "T150O3N3$bFfFO2$b$BCDO3$e$E$e$EdO2N1$bCDC3$bO3$eG$eGdFO2N5g1C3CC1D3E5F","O5N3$B5$B3G1FGF3D1C3$b1g#fg3$b1$E3GF&&&O6N1g#fg3$b1$E3G1FGF3D1C3$b1C3CC1$b3g5f","O4N3&$b&$b7&3&g&gfO3N1$bCDC3$bO5N1g#fg3$b1$e3G1FGF3D1C3$b1E3EE1E3E5f": RUN AT 3
3050 PROC entcont(): PROC scrdown(22)
3060 INK 182: PROC textprint(153,170)
3070 INK 109: PROC textprint(153,170)
3080 INK 0: PROC textprint(153,170)
3090 INK 109: PROC textprint(171,186)
3100 INK 182: PROC textprint(171,186)
3110 INK 255: PROC textprint(171,186)
3120 PROC eveofthewar(): PROC martiantheme(): PROC entanothermow(): PROC scrdown(22)
3130 GO TO %1000
3699 STOP 
3700 REM =======================
3701 DEFPROC entreincarnate()
3710 PRINT CHR$ 30; CHR$ 6; POINT 30,174; INVERSE 1;z$( TO 32); POINT 30,183;z$( TO 32); POINT 30,175;" PRESS ENTER TO BE REINCARNATED "; POINT 30,184;"      AND HAVE ANOTHER MOW      "; CHR$ 30; CHR$ 8; AT 0,0;
3720 REPEAT : REPEAT UNTIL INKEY$ = CHR$ 13
3730 ENDPROC 
3750 REM =======================
3751 DEFPROC entreselect()
3760 PRINT CHR$ 30; CHR$ 6; POINT 53,183; INVERSE 1;z$( TO 25); POINT 53,184;" PRESS ENTER TO RESELECT "; CHR$ 30; CHR$ 8; AT 0,0;
3770 REPEAT : REPEAT UNTIL INKEY$ = CHR$ 13
3780 ENDPROC 
3800 REM =======================
3801 DEFPROC entstart()
3810 PRINT CHR$ 30; CHR$ 6; POINT 41,183; INVERSE 1;z$( TO 29); POINT 41,184;" PRESS ENTER TO START MOWING "; CHR$ 30; CHR$ 8; AT 0,0;
3820 REPEAT : REPEAT UNTIL INKEY$ = CHR$ 13
3830 ENDPROC 
3850 REM =======================
3851 DEFPROC mstart()
3860 PRINT CHR$ 30; CHR$ 6; POINT 47,183; INVERSE 1;z$( TO 27); POINT 47,184;" PRESS ""M"" TO START MOWING "; CHR$ 30; CHR$ 8; AT 0,0;
3870 REPEAT : REPEAT UNTIL INKEY$ ="m"
3880 ENDPROC 
3900 REM =======================
3901 DEFPROC entcont()
3910 PRINT CHR$ 30; CHR$ 6; POINT 53,183; INVERSE 1;z$( TO 25); POINT 53,184;" PRESS ENTER TO CONTINUE "; CHR$ 30; CHR$ 8; AT 0,0;
3920 REPEAT : REPEAT UNTIL INKEY$ = CHR$ 13
3930 ENDPROC 
3950 REM =======================
3951 DEFPROC entanothermow()
3960 PRINT CHR$ 30; CHR$ 6; POINT 41,183; INVERSE 1;z$( TO 29); POINT 41,184;" PRESS ENTER FOR ANOTHER MOW "; CHR$ 30; CHR$ 8; AT 0,0;
3970 REPEAT : REPEAT UNTIL INKEY$ = CHR$ 13
3980 ENDPROC 
4000 REM =======================
4001 DEFPROC intro1()
4010 INK 109: PROC textprint(1,15)
4020 INK 182: PROC textprint(1,15)
4030 INK 255: PROC textprint(1,15)
4040 ENDPROC 
4050 REM =======================
4051 DEFPROC intro2()
4055 PROC scrdown(22)
4060 INK 182: PROC textprint(1,15)
4070 INK 109: PROC textprint(1,15)
4080 INK 0: PROC textprint(1,15)
4090 ENDPROC 
4100 REM =======================
4101 DEFPROC textprint(%a,%b)
4105 LOCAL j,y,l,x
4110 FOR j=%a TO %b
4120 y= VAL t$(j,1 TO 3): l= VAL t$(j,4 TO 5): x=(256-(6*l))/2
4130 PRINT CHR$ 30; CHR$ 6; POINT x,y;t$(j,6 TO l+5); CHR$ 30; CHR$ 8;
4140 NEXT j
4150 ENDPROC 
4200 REM =======================
4201 DEFPROC titlescreen()
4205 LOCAL j$,a$,b$
4210 REG 74,192: LOAD "title.sl2" LAYER : INK 96: OVER 1
4220 j$="By Jim Waterman, 20-28 April 2023": a$="Based on the notorious Spectrum original": b$="by Duncan MacDonald, 1988"
4230 PRINT CHR$ 30; CHR$ 6; POINT 28,153;j$: PRINT CHR$ 30; CHR$ 6; POINT 7,169;a$; POINT 52,178;b$;
4240 INK 255
4250 PRINT CHR$ 30; CHR$ 6; POINT 27,152;j$: PRINT CHR$ 30; CHR$ 6; POINT 6,168;a$; POINT 51,177;b$;
4260 OVER 0: PRINT AT 0,0;
4290 ENDPROC 
4300 REM =======================
4301 DEFPROC bigboomoutro()
4310 INK 109: PROC textprint(93,95): PROC textprint(96,107)
4320 INK 182: PROC textprint(93,95): PROC textprint(96,107)
4330 INK 255: PROC textprint(93,95): PROC textprint(96,107)
4340 ENDPROC 
4350 REM =======================
4351 DEFPROC smallboomoutro()
4360 INK 109: PROC textprint(93,95): PROC textprint(108,121)
4370 INK 182: PROC textprint(93,95): PROC textprint(108,121)
4380 INK 255: PROC textprint(93,95): PROC textprint(108,121)
4390 ENDPROC 
4400 REM =======================
4401 DEFPROC mfmright(%x,%y)
4410 SPRITE 4,%x+64,%y+32,10,1
4415 SPRITE 5,%x+80,%y+32,11,1
4420 SPRITE 6,%x+96,%y+32,12,1
4425 SPRITE 7,%x+112,%y+32,13,1
4430 SPRITE 8,%x+32,%y+48,14,1
4435 SPRITE 9,%x+48,%y+48,15,1
4440 SPRITE 10,%x+64,%y+48,16,1
4445 SPRITE 11,%x+80,%y+48,17,1
4450 SPRITE 12,%x+96,%y+48,18,1
4455 SPRITE 13,%x+112,%y+48,19,1
4460 SPRITE 14,%x+32,%y+64,20,1
4465 SPRITE 15,%x+48,%y+64,21,1
4470 SPRITE 16,%x+64,%y+64,22,1
4475 SPRITE 17,%x+80,%y+64,23,1
4480 SPRITE 18,%x+112,%y+64,24,1
4485 SPRITE 19,%x+32,%y+80,25,1
4490 SPRITE 20,%x+88,%y+80,26,1
4495 SPRITE 21,%x+112,%y+80,27,1
4500 SPRITE 22,%x+32,%y+96,28,1
4505 SPRITE 23,%x+92,%y+96,28,5
4510 SPRITE 24,%x+112,%y+96,29,1
4515 SPRITE 25,%x+32,%y+112,30,1
4520 SPRITE 26,%x+94,%y+112,28,5
4525 SPRITE 27,%x+112,%y+112,30,9
4530 SPRITE 28,%x+32,%y+128,31,1
4535 SPRITE 29,%x+86,%y+128,31,9
4540 SPRITE 30,%x+112,%y+128,31,9
4590 ENDPROC 
4600 REM =======================
4601 DEFPROC mfmleft(%x,%y)
4610 SPRITE 4,%x+80,%y+32,10,9
4615 SPRITE 5,%x+64,%y+32,11,9
4620 SPRITE 6,%x+48,%y+32,12,9
4625 SPRITE 7,%x+32,%y+32,13,9
4630 SPRITE 8,%x+112,%y+48,14,9
4635 SPRITE 9,%x+96,%y+48,15,9
4640 SPRITE 10,%x+80,%y+48,16,9
4645 SPRITE 11,%x+64,%y+48,17,9
4650 SPRITE 12,%x+48,%y+48,18,9
4655 SPRITE 13,%x+32,%y+48,19,9
4660 SPRITE 14,%x+112,%y+64,20,9
4665 SPRITE 15,%x+96,%y+64,21,9
4670 SPRITE 16,%x+80,%y+64,22,9
4675 SPRITE 17,%x+64,%y+64,23,9
4680 SPRITE 18,%x+32,%y+64,24,9
4685 SPRITE 19,%x+112,%y+80,25,9
4690 SPRITE 20,%x+56,%y+80,26,9
4695 SPRITE 21,%x+32,%y+80,27,9
4700 SPRITE 22,%x+112,%y+96,28,9
4705 SPRITE 23,%x+52,%y+96,28,13
4710 SPRITE 24,%x+32,%y+96,29,9
4715 SPRITE 25,%x+112,%y+112,30,9
4720 SPRITE 26,%x+50,%y+112,28,13
4725 SPRITE 27,%x+32,%y+112,30,1
4730 SPRITE 28,%x+112,%y+128,31,9
4735 SPRITE 29,%x+58,%y+128,31,1
4740 SPRITE 30,%x+32,%y+128,31,1
4750 ENDPROC 
4760 REM =======================
4761 DEFPROC toomuchweed()
4770 INK 109: PROC textprint(137,152)
4780 INK 182: PROC textprint(137,152)
4790 INK 255: PROC textprint(137,152)
4795 ENDPROC 
4800 REM =======================
4801 DEFPROC martiantheme()
4810 RUN AT 0: PLAY "","T120UX8000W0O7N3D5dO6N3D5dO5N3D7dUX200W5N3_7&5F3&5D6&5G3&5D3&UX8000W0O7N3D5dO6N3D5dO5N3D7d": RUN AT 3
4820 ENDPROC 
4900 REM =======================
4901 DEFPROC eveofthewar()
4905 LOCAL u$,v$,w$
4920 u$="T132O5(3a1&)3_7_9g(3g1&)3_7_9f(3a1&)3_7_9g3g1&3e1&7d3C(6D3C)DCDC9D"
4930 v$="V13O4(3D1&)3_7_9#C(3#C1&)3_7_9D(3D1&)3_7_9#C3#C1&3#C1&7a3A(6A3A)AAAA9A"
4940 w$="V12O3N6D7E1$ba3a$b#CDEFGA6E3_7_9D6D7E1$ba3a$b#CDEFGA4EC7D3C(6D3C)DCDC9D"
4950 RUN AT 0: PLAY u$,v$,w$: RUN AT 3
4990 ENDPROC 
8900 REM =======================
8901 DEFPROC scrdown(%v)
8905 LOCAL %j
8910 FOR %j=%v TO 23: PRINT AT %j,0; CHR$ 30; CHR$ 8; AT %j,0;z$;: NEXT %j
8920 ENDPROC 
9000 REM =======================
9001 DEFPROC defscreen()
9002 LOCAL %j
9008 PALETTE FORMAT 255
9010 PALETTE DIM 8
9012 BANK 43 ERASE 0,16384,0
9014 PALETTE OVER 175
9020 FOR %j=0 TO 255: BANK 43 POKE %j,%j: NEXT %j
9021 LAYER OVER 0
9022 %p=0: LAYER 1,0: LAYER PALETTE 0 BANK 43,0: PAPER %p: CLS 
9030 LAYER 2,1: LAYER PALETTE 0 BANK 43,0: PAPER %p: INK 255: REG 74,0: CLS 
9045 ENDPROC 
9050 REM =======================
9051 DEFPROC deftiles()
9052 LOCAL %a,%b,%j,%k,%m,%o,%p,%q,%r,%w
9060 %k=100: %r=224: %p=232: %w=246
9070 TILE BANK 42: BANK 42 ERASE 0,64,175: BANK 42 ERASE 64,1024,%k
9075 REM ******* LIVE WEED TILES
9080 FOR %o=1 TO 8
9090 FOR %j=0 TO 7: FOR %m=1 TO 8: %a[m+(8*j)]=%k: NEXT %m: NEXT %j
9100 REPEAT : %b[1]=%4+ RND 2
9110 FOR %j=2 TO 8: %b[j]=%b[j-1]-1+ RND 3: NEXT %j
9120 REPEAT UNTIL %(b[8]>3) AND (b[8]<6)
9130 FOR %j=1 TO 8: %q=%8*(b[j]-1): %a[j+q]=%r
9140 IF %b[j]>1 THEN %a[j+q-8]=%w
9150 IF %b[j]<8 THEN %a[j+q+8]=%w
9160 NEXT %j
9170 REPEAT : %b[1]=%4+ RND 2
9180 FOR %j=2 TO 8: %b[j]=%b[j-1]-1+ RND 3: NEXT %j
9190 REPEAT UNTIL %(b[8]>3) AND (b[8]<6)
9200 FOR %j=1 TO 8: %q=%8*(j-1): %a[q+b[j]]=%r
9210 IF %(b[j]>1) AND (a[q+b[j]-1]<>w) AND (a[q+b[j]-1]<>r) THEN %a[q+b[j]-1]=%w
9220 IF %(b[j]<8) AND (a[q+b[j]+1]<>w) AND (a[q+b[j]+1]<>r) THEN %a[q+b[j]+1]=%w
9230 NEXT %j
9240 IF %(a[2]=k) AND (a[10]=k) AND (a[9]=k) THEN %a[1]=%p
9250 IF %(a[3]=k) AND (a[11]=k) AND (a[10]=k) THEN %a[2]=%p
9260 IF %(a[17]=k) AND (a[18]=k) AND (a[10]=k) THEN %a[9]=%p
9270 IF %(a[3]=k) AND (a[11]=k) AND (a[19]=k) AND (a[18]=k) AND (a[17]=k) THEN %a[10]=%p
9280 IF %(a[7]=k) AND (a[15]=k) AND (a[16]=k) THEN %a[8]=%p
9290 IF %(a[6]=k) AND (a[14]=k) AND (a[15]=k) THEN %a[7]=%p
9300 IF %(a[24]=k) AND (a[23]=k) AND (a[15]=k) THEN %a[16]=%p
9310 IF %(a[6]=k) AND (a[14]=k) AND (a[22]=k) AND (a[23]=k) AND (a[24]=k) THEN %a[15]=%p
9320 IF %(a[58]=k) AND (a[50]=k) AND (a[49]=k) THEN %a[57]=%p
9330 IF %(a[59]=k) AND (a[51]=k) AND (a[50]=k) THEN %a[58]=%p
9340 IF %(a[41]=k) AND (a[42]=k) AND (a[50]=k) THEN %a[49]=%p
9350 IF %(a[59]=k) AND (a[51]=k) AND (a[43]=k) AND (a[42]=k) AND (a[41]=k) THEN %a[50]=%p
9360 IF %(a[63]=k) AND (a[55]=k) AND (a[56]=k) THEN %a[64]=%p
9370 IF %(a[62]=k) AND (a[54]=k) AND (a[55]=k) THEN %a[63]=%p
9380 IF %(a[48]=k) AND (a[47]=k) AND (a[55]=k) THEN %a[56]=%p
9390 IF %(a[62]=k) AND (a[54]=k) AND (a[46]=k) AND (a[47]=k) AND (a[48]=k) THEN %a[55]=%p
9400 FOR %j=1 TO 64: BANK 42 POKE %(o*64)+j-1,%a[j]: NEXT %j
9410 NEXT %o
9415 REM ******* MOWN WEED TILES
9420 FOR %o=1 TO 8
9430 FOR %j=0 TO 7: FOR %m=1 TO 8: %a[m+(8*j)]=%k: NEXT %m: NEXT %j
9440 %b[1]=10: %b[2]=14: %b[3]=42: %b[4]=55
9450 FOR %j=5 TO 8: %q=% RND 2: %b[j]=%(p AND NOT q)+(w AND q): NEXT %j
9460 REPEAT : %q=% RND 256: REPEAT UNTIL %q&60<>60
9470 %b[1]=%b[1]+((q&128)>>7)+((q&64)>>3)
9480 %b[2]=%b[2]-((q&32)>>5)+((q&16)>>1)
9490 %b[3]=%b[3]+((q&8)>>3)-((q&4)<<1)
9500 %b[4]=%b[4]-((q&2)>>1)-((q&1)<<3)
9510 %a[b[1]]=%b[5]
9520 %a[b[2]]=%b[6]:%a[b[2]+1]=%b[6]:%a[b[2]+8]=%b[6]:%a[b[2]+9]=%b[6]
9530 %a[b[3]]=%b[7]:%a[b[3]+1]=%b[7]:%a[b[3]+8]=%b[7]:%a[b[3]+9]=%b[7]
9540 %a[b[4]]=%b[8]
9550 FOR %j=1 TO 64: BANK 42 POKE %(o*64)+j+511,%a[j]: NEXT %j
9560 NEXT %o
9565 REM ****** ALL TILES IN MAP
9570 TILE DIM 41,0,32,8: FOR %j=0 TO 16: BANK 41 POKE %j,%j: NEXT %j
9575 REM **** GAME AREA TILE MAP
9580 FOR %j=32 TO 479: BANK 41 POKE %j,%1+ RND 8: NEXT %j
9590 ENDPROC 
9600 REM =======================
9601 DEFPROC setup1()
9610 DIM t$(186,46): DIM m$(6,39)
9620 LOAD "text.car" DATA t$()
9630 LOAD "chars6.bin" CODE 64512,768
9640 DPOKE 23606,64256: PRINT CHR$ 31; CHR$ 6;: POKE 23658,0
9645 ENDPROC 
9650 REM =======================
9651 DEFPROC setup2()
9655 LOCAL %j
9660 LOAD "mowers.car" DATA m$()
9700 LOAD "mcode.bin" BANK 47,0,65
9710 LOAD "spaceman.spr" BANK 40
9720 SPRITE BANK 40
9730 SPRITE BORDER 0
9740 RESTORE %9750: FOR %j=1 TO 23: READ %m[j]: NEXT %j
9750 DATA 0,1,0,2,3,4,286,2,12,0,16,1,12,266,284,2,-2,24,16,0,9,22,274
9790 z$="                                "
9990 ENDPROC 
9991 REM =======================
9992 DEFPROC mem()
9995 %r=% DPEEK 23730: %s=% DPEEK 23653: CLS : PRINT "RAMTOP = ";%r,"STKEND = ";%s''"MEMORY REMAINING = ";%r-s;" BYTES"
9996 ENDPROC 
